Lagged Fibonacci Generator

Lagged Fibonacci generator (LFG) เป็นตัวอย่างหนึ่งของ pseudorandom number generator ( ซึ่งเป็นหนึ่งในคลาสของ random number generator ) ในคลาสของ random number generator นั้นมีเป้าหมายเพื่อที่จะ ปรับปรุงและพัฒนาบนพื้นฐานของ linear congruential generator ซึ่งทั้งหมดเหล่านี้ก็อยู่บนพื้นฐานของ ลำดับของ Fibonacci ( Fibonacci Sequence )ลำดับของ Fibonacci สามารถเขียนอยู่ในรูปแบบ ของความสัมพันธ์แบบเวียนเกิด ( recurrence relation ) ได้ดังนี้ Sn = Sn − 1 + Sn − 2
จากความสัมพันธ์ที่เขียนอยู่ในรูปสมการ ข้างต้นนั้น จะเห็นได้ว่า พจน์ใหม่เกิดขึ้นจาก ผลรวมของสองพจน์ก่อนหน้ในลำดับ ซึ่งเราสามารถทำให้อยู่ในรูปแบบของลำดับทั่วไปได้ดังนี้ Sn = Sn-j * Sn-k ( mod m ), 0<j<kจากลำดับที่แสดงนี้จะเห็นได้ว่า พจน์ใหม่ที่เกิดขึ้น มาจาก สองพจน์ใดๆก่อนหน้า มากระทำการทางคณิตศาสตร์อธิบายจากสมการของลำดับทั่วไปด้านบน- m คือตัวแปรที่ โดยส่วนใหญ่จะอยู่ในรูปของ ยกกำลังของ 2 (m = 2m; ตัวอย่างเช่น 232 หรือ 264)- * คือเครื่องหมายตัวกระทำการ ที่ใช้ในระบบของเลขฐานสอง ซึ่งอาจจะเป็นเครื่องหมาย การบวก ,การลบ,การคูณ หรือเครื่องหมายทางตรรกศาสตร์ เช่น XOR ( Exclusive-OR)จะเห็นได้ว่าจากทฤษฎีนี้ค่อนข้างจะซับซ้อน และ การที่จะเลือกค่าสุ่มของ j และ k ก็ไม่ใช่เรื่องที่ง่ายนัก และยังมีแนวโน้มที่จะเกิดความยุ่งยากได้ง่ายอีกด้วยถ้าเครื่องหมาย * เป็นการบวก เราก็จะเรียกว่า Additive Lagged Fibonacci Generator หรือ ALFGถ้าเครื่องหมาย * เป็นการคูณ เราก็จะเรียกว่า Multiplicative Lagged Fibonacci Generator หรือ MLFGถ้าเครื่องหมาย * เป็น XOR เราก็จะเรียกว่า Two-tap generalised feedback shift register or GFSR ( ซึ่ง Mersenne twister algorithm ก็ใช้ GFSR ในขั้นตอนของการแก้ปัญหา )